package com.example.administrator.myapplication.utils;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * String、Date、Long类型的日期相互转换公共基类
 *
 * @author LiJL
 *
 */
public class DateUtil {

	/**
	 * Date类型转换为String类型
	 *
	 * @param date
	 *            :Date类型的时间
	 * @param formatType
	 *            :格式为yyyy-MM-dd HH:mm:ss//yyyy年MM月dd日 HH时mm分ss秒
	 * @return
	 */
	public static String DateToString(Date date, String formatType) {
		SimpleDateFormat format = new SimpleDateFormat(formatType);
		return format.format(date);
	}

	/**
	 * date类型转换为long类型
	 *
	 * @param date
	 *            :要转换的date类型的时间
	 * @return
	 */
	public static long DateToLong(Date date) {
		return date.getTime();
	}

	/**
	 * 把long型时间转换成指定字符串格式
	 *
	 * @param time
	 * @param formatType
	 *            :传入要转换的格式，如：yyyy-MM-dd HH:mm:ss
	 * @return
	 */
	public static String LongToString(long time, String formatType) {
		SimpleDateFormat format = new SimpleDateFormat(formatType);
		return format.format(new Date(time));
	}

	/**
	 * Long转换为Date类型
	 *
	 * @param currentTime
	 *            :要转换的long类型的时间
	 * @param formatType
	 *            :要转换的时间格式yyyy-MM-dd HH:mm:ss//yyyy年MM月dd日 HH时mm分ss秒
	 * @return
	 * @throws ParseException
	 */
	public static Date LongToDate(long currentTime, String formatType)
			throws ParseException {
		Date dateOld = new Date(currentTime); // 根据long类型的毫秒数生命一个date类型的时间
		String sDateTime = DateToString(dateOld, formatType); // 把date类型的时间转换为string
		Date date = StringToDate(sDateTime, formatType); // 把String类型转换为Date类型
		return date;
	}

	/**
	 * 字符串时间转为long型
	 *
	 * @param strTime
	 * @param formatType
	 *            :传入字符串时间对应的格式如：2010-1-1 10:10:10 格式为 yyyy-MM-dd HH:mm:ss
	 * @return
	 */
	public static long StringToLong(String strTime, String formatType) {
		SimpleDateFormat format = new SimpleDateFormat(formatType);
		try {
			return format.parse(strTime).getTime();
		} catch (ParseException e) {
			e.printStackTrace();
			return -1;
		}
	}

	/**
	 * String类型转换为Date类型
	 *
	 * @param strTime
	 *            :要转换的string类型的时间，strTime的时间格式必须要与formatType的时间格式相同
	 * @param formatType
	 *            :要转换的格式yyyy-MM-dd HH:mm:ss//yyyy年MM月dd日HH时mm分ss秒
	 * @return
	 * @throws ParseException
	 */
	public static Date StringToDate(String strTime, String formatType)
			throws ParseException {
		SimpleDateFormat formatter = new SimpleDateFormat(formatType);
		Date date = null;
		date = formatter.parse(strTime);
		return date;
	}
}
